#ifndef SUBMARINECONFIGURATION_H_
#define SUBMARINECONFIGURATION_H_
#include "RectangularBoatShape.h"
#include "InvalidBoatConfiguration.h"
#include "Dimension.h"

class SubmarineConfiguration {
public:
	SubmarineConfiguration(int);
	virtual ~SubmarineConfiguration();

	static SubmarineConfiguration* createSubmarineConfiguration(int) throw (InvalidBoatConfiguration);

	virtual RectangularBoatShape* getShape(const string&, const Point<int>&, char) const = 0;

	int getNumberConfiguration() const;
private:
	int numberConfiguration;
};

class SubmarineConfiguration1 : public SubmarineConfiguration {
public:
	SubmarineConfiguration1();
	virtual ~SubmarineConfiguration1();

	virtual RectangularBoatShape* getShape(const string&, const Point<int>&, char) const;
};

class SubmarineConfiguration2 : public SubmarineConfiguration {
public:
	SubmarineConfiguration2();
	virtual ~SubmarineConfiguration2();

	virtual RectangularBoatShape* getShape(const string&, const Point<int>&, char) const;
};

#endif
